package org.fengling.readingplatform.novel.utils;

import jakarta.annotation.PostConstruct;
import jakarta.annotation.Resource;

import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

@Component
public class BloomFilterInit {

    @Resource
    private RedisTemplate redisTemplate;

    @PostConstruct//初始化白名单数据
    public void init() {
        //1 白名单客户加载到布隆过滤器
        String key = "novelInfo:readingplatform:1";
        //2 计算hashValue，由于存在计算出来负数的可能，取绝对值
        int hashValue = Math.abs(key.hashCode());
        //3 通过hashValue和2的32次方后取余，获得对应的下标坑位
        long index = (long) (hashValue % Math.pow(2, 32));
        //4 设置redis里面的bitmap对应的白名单，novelInfo的坑位，将该位置设置为1
        redisTemplate.opsForValue().setBit("novelInfo", index, true);

    }
}